import { useState, useEffect } from 'react';

export function useCountdownTimer(initialMinutes) {
    const [minutes, setMinutes] = useState(initialMinutes);
    const [timeLeft, setTimeLeft] = useState(minutes * 60); // 将分钟转换为秒
    const [intervalId, setIntervalId] = useState(null);

    useEffect(() => {
        setTimeLeft(minutes * 60); // 当 minutes 改变时，重置 timeLeft
    }, [minutes]);

    useEffect(() => {
        if (timeLeft === 0 && intervalId) {
            clearInterval(intervalId); // 倒计时结束时清除计时器
            setIntervalId(null);
        }
    }, [timeLeft, intervalId]);

    const startTimer = () => {
        if (intervalId) return; // 如果计时器已经启动，阻止重复启动

        const id: any = setInterval(() => {
            setTimeLeft(prevTime => prevTime - 1);
        }, 1000); // 每秒更新一次

        setIntervalId(id);
    };

    const resetTimer = () => {
        if (intervalId) {
            clearInterval(intervalId); // 清除当前计时器
        }
        setTimeLeft(minutes * 60); // 重置为初始时间
        setIntervalId(null);
    };

    const changeTime = (newMinutes) => {
        if (intervalId) {
            clearInterval(intervalId); // 切换时间时清除当前计时器
        }
        setMinutes(newMinutes);
        setTimeLeft(newMinutes * 60); // 立即重置 timeLeft 为新值
        setIntervalId(null); // 重置计时器 ID
    };

    const getProgress: any = () => {
        // 如果时间刚刚被重置，确保 progress 是 0
        if (timeLeft === minutes * 60) {
            return 0;
        }
        return ((minutes * 60 - timeLeft) / (minutes * 60)) * 100;
    };

    return { timeLeft, startTimer, resetTimer, changeTime, getProgress };
};

